import { constantRoutes, asyncRouter } from '@/router' // 导入每个用户都有的静态路由 和动态路由

const state = {
  Routes: constantRoutes // 将静态路由存储到本地   此处路由信息使用来遍历左侧导航栏的
}
export const mutations = {
  // 设置权限路由
  SET_ROUTES(state, newRouts) {
    state.Routes = [...constantRoutes, ...newRouts] // 将基础静态路由和 用户拥有的路由合并
  }

}

export const actions = {
  // 过滤用户权限  路由前置守卫跳转时 获取用户数据并把路由权限标识 传过来 再用当前定义的所有动态路由的名字和当前用户路由标识比对
  filterRoutes(state, newRouts) {
    const routes = []
    // 遍历用户权限标识 并过滤出动态路由中名字和 标识一致的路由
    newRouts.forEach(key => {
      routes.push(...asyncRouter.filter(item => key === item.name))
    })

    // 将当前用户 拥有的路由权限保存到vuex中
    state.commit('SET_ROUTES', routes)
    return routes // 此处返回过滤后的路由信息是要添加到路由表的
  }
}
export default {
  namespaced: true, // 开启命名空间
  state,
  mutations,
  actions
}
